def main():
    '''
    主函数
    user:用户数据模拟
    tid:唯一标识码，用来区分账号相同的情况
    admin:账号
    passw:密码
    name:姓名
    money:存款
    :return:
    '''
    user=[{'tid':0,'admin':'aaa','passw':'1111','name':'zhangsan','money':1000},
          {'tid':1,'admin':'bbb','passw':'2222','name':'lisi','money':1000},
          {'tid':2,'admin':'ccc','passw':'3333','name':'wangwu','money':1000},
          {'tid':3,'admin':'ddd','passw':'4444','name':'xiaoliu','money':1000}]
    def login():
        '''
        登陆函数
        :return:参数1：
                    '1'代表登录成功
                    '2'代表账号不存在
                    '3'代表密码不对
                    '4'代表唯一标识码超出范围
                参数2：唯一标识码tid，供存取款函数使用
        '''
        nonlocal user
        tid=int(input('请输入唯一标识码tid:'))
        admin=input('请输入账号:')
        passw=input('请输入密码:')
        if tid>len(user):
            return '4',tid
        elif user[tid]['admin']!=admin:
            return '2',tid
        elif user[tid]['passw']!=passw:
            return '3',tid
        return '1',tid
    def zhuce():
        '''
        注册函数，注册新账户
        :return:
        '''
        nonlocal user
        num=len(user)#获取列表长度，计算唯一标识码tid
        admin=input('请输入账号:')
        passw=input('请输入密码:')
        name=input('请输入您的真实姓名:')
        user.append({'tid':num,'admin':admin,'passw':passw,'name':name,'money':0})#添加账户信息到user
        return num
    def show_inof(tid):
        '''
        账户显示函数
        :return:
        '''
        nonlocal user
        print('=' * 15 + "  银行自助存取款系统   " + '=' * 15)
        print('='*10+'  账户信息  '+'='*10)
        print('|{0:<4}|{1:<14}|{2:<14}|'.format('tid','name','money'))
        print('-'*36)
        print('|{0:<4}|{1:<14}|{2:<14}|'.format(user[tid]['tid'],user[tid]['name'],user[tid]['money']))
    def cun(tid,num_qian):
        '''
        存款函数
        :param tid:唯一标识码
        :param num_qian:存的钱数
        :return:
        '''
        nonlocal user
        user[tid]['money']+=num_qian
    def qu(tid,num_qian):
        '''
        取款函数
        :param tid:唯一标识码
        :param num_qian:取得钱数
        :return:
        '''
        nonlocal user
        if num_qian>user[tid]['money']:
            print('余额不足,已自动返回上一层')
        else:
            user[tid]['money']-=num_qian

    ###主程序
    while 1:
        print('='*15+"  银行自助存取款系统   "+'='*15)
        print('1.已有账户登录\n2.注册新账户\n3.退出系统')
        print('='*50)
        option=input('请输入对应选择:')
        if option=='1':
            res=login()
            if res[0]=='1':#登录成功
                while 1:
                    show_inof(res[1])#显示账户信息
                    print('1.存款\t2.取款\n输入其它，将强制退出账号')
                    select=input('请输入对应选择:')
                    if select =='1':
                        num_qian=int(input('请输入存的钱数:'))
                        cun(res[1],num_qian)
                    elif select=='2':
                        num_qian=int(input('请输入取得钱数:'))
                        qu(res[1],num_qian)
                    else:
                        print('退出账号')
                        break
            elif res[0]=='2':
                print('账号不存在，自动返回上一层！！！')
            elif res[0]=='3':
                print('密码错误，自动返回上一层！！！')
            elif res[0]=='4':
                print('标识码超出范围，自动返回上一层！！！')
        elif option=='2':
            res=zhuce()
            print(f'这是您的唯一标识码tid:{res},请牢记！！！')
        elif option=='3':
            print('系统已成功退出')
            return
        else:
            print('输入不合法，请输入正确数字！')
main()